aboutsummaryrefslogtreecommitdiff
path: root/src/routes/projects/[id]
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-09-08 17:06:51 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-09-08 17:06:51 +0200
commitbd2f982c489b15ce1165c051fdedf35af979f784 (patch)
tree5c76d07f94b34f6b7b31be6a133793b2cdaccd79 /src/routes/projects/[id]
parent6d69c7b1e6a8051338e052cc9d1836f4f1a20f51 (diff)
Migrate date handling from Date to Temporal API
Routine scheduling, health series, service stamps, session expiry, and date formatting move to native Temporal (Instant / ZonedDateTime in UTC), with ISO strings kept at DB and chart boundaries. Ambient types in src/temporal-ambient.d.ts cover the native runtime; no polyfill. Observable behavior and stored formats are unchanged.
Diffstat (limited to 'src/routes/projects/[id]')
-rw-r--r--src/routes/projects/[id]/+page.server.ts2
-rw-r--r--src/routes/projects/[id]/+page.svelte10
2 files changed, 4 insertions, 8 deletions
diff --git a/src/routes/projects/[id]/+page.server.ts b/src/routes/projects/[id]/+page.server.ts
index 7cb90ff..19aea9b 100644
--- a/src/routes/projects/[id]/+page.server.ts
+++ b/src/routes/projects/[id]/+page.server.ts
@@ -26,7 +26,7 @@ export const load: PageServerLoad = async ({ params }) => {
if (!project || project.archived) {
throw error(404, 'Projet introuvable');
}
- const dashboard = await loadProjectDashboard(id, Date.now());
+ const dashboard = await loadProjectDashboard(id, Temporal.Now.instant());
const archived = await loadArchived(id);
return {
project: { id: project.id, name: project.name },
diff --git a/src/routes/projects/[id]/+page.svelte b/src/routes/projects/[id]/+page.svelte
index a58aeba..9931f40 100644
--- a/src/routes/projects/[id]/+page.svelte
+++ b/src/routes/projects/[id]/+page.svelte
@@ -9,6 +9,7 @@
parseIntervalToDays,
type RoutineState,
} from '$lib/shared/routine-metrics';
+ import { formatDayMonth } from '$lib/shared/temporal';
let { data, form } = $props();
@@ -30,11 +31,6 @@
: matchItems(data.archived, archiveFilter).map((m) => m.obj),
);
- const dateFormatter = new Intl.DateTimeFormat('fr-FR', {
- day: 'numeric',
- month: 'short',
- });
-
function sorted(routines: RoutineState[]): RoutineState[] {
return [...routines].sort(
(a, b) => b.overdueRatio - a.overdueRatio || a.name.localeCompare(b.name),
@@ -182,7 +178,7 @@
<span class="routine-meta">
{formatFrequency(routine.frequencyDays)}
{#if routine.lastDoneAt}
- · fait le {dateFormatter.format(new Date(routine.lastDoneAt))}
+ · fait le {formatDayMonth(routine.lastDoneAt)}
{:else}
· jamais fait
{/if}
@@ -244,7 +240,7 @@
>
<span class="archived-date">
{formatFrequency(routine.frequencyDays)} · archivée le
- {dateFormatter.format(new Date(routine.archivedAt))}
+ {formatDayMonth(routine.archivedAt)}
</span>
</li>
{/each}